In some applications, such as Internet-related applications, caching, such as distributed caching, has been widely used. The most common examples are memcached and redis, both of which may provide a k-v (i.e., key-value) caching service.
Memcached is non-persistent. If a restart is executed, data cached by memcached will be lost and the application program needs to perform additional steps to reconstruct the data, for example, drawing data from a database and storing into the memcached again.
Although redis is persistent, it has a higher requirement on memory resources in dealing with a large amount of data, and a recovery after a restart is slow. In addition, it may still lose data.
Therefore, it is important to design a new k-v (key value) caching solution, not only persistent, but also capable of quickly reconstructing data in case of a restart.